home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / e / amigae33a.lha / E_v3.3a / Src.lha / Src / Tools / Useful / sendrexx.e < prev    next >
Text File  |  1997-05-31  |  1KB  |  47 lines

  1. OPT MODULE, PREPROCESS
  2.  
  3. MODULE 'exec/ports',
  4.        'exec/nodes',
  5.        'rexx/rxslib',
  6.        'rexx/storage',
  7.        'rexxsyslib',
  8.        'amigalib/ports'
  9.  
  10. ENUM ERR_NONE, ERR_LIB, ERR_RMSG, ERR_RSTR
  11.  
  12. RAISE ERR_LIB  IF OpenLibrary()=NIL,
  13.       ERR_RMSG IF CreateRexxMsg()=NIL,
  14.       ERR_RSTR IF CreateArgstring()=NIL
  15.  
  16. EXPORT PROC rx_SendMsg(portname, s, repPort=NIL) HANDLE
  17.   DEF port=NIL, msg=NIL:PTR TO rexxmsg, myrep=NIL, lib=NIL, success=FALSE
  18.   IF rexxsysbase=NIL
  19.     rexxsysbase:=lib:=OpenLibrary(RXSNAME, 0)
  20.   ENDIF
  21.   IF repPort=NIL
  22.     IF NIL=(repPort:=myrep:=createPort(NIL,0)) THEN Raise("PORT")
  23.   ENDIF
  24.   msg:=CreateRexxMsg(repPort, NIL, portname)
  25.   msg.action:=RXCOMM
  26.   msg.args[]:=CreateArgstring(s, StrLen(s))
  27.   msg.mn.ln.name:=RXSDIR
  28.   Forbid()
  29.   IF port:=FindPort(RXSDIR) THEN PutMsg(port, msg)
  30.   Permit()
  31.   IF port
  32.     WaitPort(repPort)
  33.     msg:=GetMsg(repPort)
  34.     success:=(msg.result1=0)
  35.   ENDIF
  36. EXCEPT DO
  37.   IF msg
  38.     IF msg.args[] THEN DeleteArgstring(msg.args[])
  39.     DeleteRexxMsg(msg)
  40.   ENDIF
  41.   IF myrep THEN deletePort(myrep)
  42.   IF lib
  43.     CloseLibrary(lib)
  44.     rexxsysbase:=NIL
  45.   ENDIF
  46. ENDPROC success
  47.